﻿using System;
using System.Collections.Generic;

namespace UploadClient.Interfaces.Upload
{
    public interface IUploadHost
    {
        /// <summary>
        /// Returns a directory for temporary files.
        /// </summary>
        /// <returns>Path to the location as string.</returns>
        string GetTempFileDir();

        /// <summary>
        /// The Programname.
        /// </summary>
        /// <returns>Programname as string.</returns>
        string GetProgramName();

        /// <summary>
        /// Location of the program. 
        /// </summary>
        /// <returns>Filepath as string.</returns>
        string GetExecutingAssemblyLocation();

        /// <summary>
        /// Get the above foldername of the program.
        /// </summary>
        /// <returns>Foldername as string.</returns>
        string GetExecutingAssemblyDirectoryName();

        /// <summary>
        /// The programversion.
        /// </summary>
        /// <returns>The version as string.</returns>
        string GetProgramVersion();

        /// <summary>
        /// Use the global exception window to informe about exceptions.
        /// </summary>
        /// <param name="ex">The exception.</param>
        void ThrowException(Exception ex);

        /// <summary>
        /// Add additional dictionarys to the localization manager.
        /// </summary>
        /// <param name="dictionarys">Dictionarys with language code and the dictionarys with key and translation.</param>
        void SetLocalizationRessourceDictionarys(Dictionary<string, Dictionary<string, string>> dictionarys);

        /// <summary>
        /// Returns a string in the right language.
        /// </summary>
        /// <param name="key">The identifier.</param>
        /// <returns>String in the right language.</returns>
        string GetLocalizationRessourceString(string key);
    } 
}
